// 子模块cart路径：store/modules/cart.js 
export default {
    namespaced: true,//命名空间
    state: {
        // 购物车数组
        // cartList:[
        //     // {
        //         // 商品的id
        //         // 商品的图片
        //         // 商品的价格
        //         // 商品的名称
        //         // 选中状态
        //         // 购买的数量
        //     // }
        //     // {
        //     //     nums:1
        //     // },
        //     // {
        //     //     nums:10
        //     // }
        // ]
        cartList: uni.getStorageSync("cartList") || []
    },
    getters: {
        // 已经选中的商品 数组
        checkedCartList(state) {
            return state.cartList.filter(item => item.checked === true)
        },

        // 要支付的商品的总价格 checkedPrice
        checkedPrice(state, getters) {
            return getters.checkedCartList.reduce((price, item) => price += item.nums * item.goods_price, 0);
        },

        // 要支付的商品的总数量 checkedCount
        checkedCount(state, getters) {
            return getters.checkedCartList.reduce((count, item) => count += item.nums, 0);
        }
    },
    mutations: {
        // 给购物车 新增商品元素 payload={value:要添加的商品对象}
        cartAdd(state, payload) {
            // 判断当前商品是否已经存在 
            const index = state.cartList.findIndex(item => item.goods_id === payload.value.goods_id)
            if (index === -1) {
                // 不存在 push新的元素
                // 要自己设置一个购买数量进去 选中状态
                state.cartList.push({ ...payload.value, nums: 1, checked: true })
            } else {
                // 存在
                // 存在 找到它 购买数量 ++
                state.cartList[index].nums++
            }
            // console.log(state.cartList);
            uni.setStorageSync("cartList", state.cartList)
        },
        // 商品的选中 取反功能payload={index}
        cartGoodsChecked(state, payload) {
            state.cartList[payload.index].checked = !state.cartList[payload.index].checked
            uni.setStorageSync("cartList", state.cartList)
        },
        // 数量编辑  payload ={unit:1,index}  payload ={unit:-1,index}
        cartGoodsNumUpdate(state, payload) {
            state.cartList[payload.index].nums += payload.unit
            uni.setStorageSync("cartList", state.cartList)
        },
        // 删除数组中的某个元素 根据下标来删除
        cartGoodsRemove(state, payload) {
            state.cartList.splice(payload.index, 1)
            uni.setStorageSync("cartList", state.cartList)
        },
        // 修改所有商品的选中状态payload={checked}
        cartAllGoodsChecked(state, payload) {
            state.cartList.forEach(item => item.checked = payload.checked);
            uni.setStorageSync("cartList", state.cartList)
        }
    },
    actions: {

    }
}